{{cookiecutter.component_id}}/log/log.go (155 lines of code) (raw):

package log import ( "os" "github.com/sirupsen/logrus" {% if cookiecutter.use_viper_config == "y" %}"github.com/{{cookiecutter.github_username}}/{{cookiecutter.component_id}}/config"{% endif %} ) // Logger defines a set of methods for writing application logs. Derived from and // inspired by logrus.Entry. type Logger interface { Debug(args ...interface{}) Debugf(format string, args ...interface{}) Debugln(args ...interface{}) Error(args ...interface{}) Errorf(format string, args ...interface{}) Errorln(args ...interface{}) Fatal(args ...interface{}) Fatalf(format string, args ...interface{}) Fatalln(args ...interface{}) Info(args ...interface{}) Infof(format string, args ...interface{}) Infoln(args ...interface{}) Panic(args ...interface{}) Panicf(format string, args ...interface{}) Panicln(args ...interface{}) Print(args ...interface{}) Printf(format string, args ...interface{}) Println(args ...interface{}) Warn(args ...interface{}) Warnf(format string, args ...interface{}) Warning(args ...interface{}) Warningf(format string, args ...interface{}) Warningln(args ...interface{}) Warnln(args ...interface{}) } var defaultLogger *logrus.Logger func init() { defaultLogger = newLogrusLogger(config.Config()) } {% if cookiecutter.use_viper_config == "y" %} // NewLogger returns a configured logrus instance func NewLogger(cfg config.Provider) *logrus.Logger { return newLogrusLogger(cfg) } {% else %} // NewLogger returns logrus instance func NewLogger() *logrus.Logger { return newLogrusLogger() } {% endif %} {% if cookiecutter.use_viper_config == "y" %} func newLogrusLogger(cfg config.Provider) *logrus.Logger { {% else %} func newLogrusLogger() *logrus.Logger { {% endif %} l := logrus.New() {% if cookiecutter.use_viper_config == "y" %} if cfg.GetBool("json_logs") { l.Formatter = new(logrus.JSONFormatter) } l.Out = os.Stderr switch cfg.GetString("loglevel") { case "debug": l.Level = logrus.DebugLevel case "warning": l.Level = logrus.WarnLevel case "info": l.Level = logrus.InfoLevel default: l.Level = logrus.DebugLevel } {% endif %} return l } // Fields is a map string interface to define fields in the structured log type Fields map[string]interface{} // With allow us to define fields in out structured logs func (f Fields) With(k string, v interface{}) Fields { f[k] = v return f } // WithFields allow us to define fields in out structured logs func (f Fields) WithFields(f2 Fields) Fields { for k, v := range f2 { f[k] = v } return f } // WithFields allow us to define fields in out structured logs func WithFields(fields Fields) Logger { return defaultLogger.WithFields(logrus.Fields(fields)) } // Debug package-level convenience method. func Debug(args ...interface{}) { defaultLogger.Debug(args...) } // Debugf package-level convenience method. func Debugf(format string, args ...interface{}) { defaultLogger.Debugf(format, args...) } // Debugln package-level convenience method. func Debugln(args ...interface{}) { defaultLogger.Debugln(args...) } // Error package-level convenience method. func Error(args ...interface{}) { defaultLogger.Error(args...) } // Errorf package-level convenience method. func Errorf(format string, args ...interface{}) { defaultLogger.Errorf(format, args...) } // Errorln package-level convenience method. func Errorln(args ...interface{}) { defaultLogger.Errorln(args...) } // Fatal package-level convenience method. func Fatal(args ...interface{}) { defaultLogger.Fatal(args...) } // Fatalf package-level convenience method. func Fatalf(format string, args ...interface{}) { defaultLogger.Fatalf(format, args...) } // Fatalln package-level convenience method. func Fatalln(args ...interface{}) { defaultLogger.Fatalln(args...) } // Info package-level convenience method. func Info(args ...interface{}) { defaultLogger.Info(args...) } // Infof package-level convenience method. func Infof(format string, args ...interface{}) { defaultLogger.Infof(format, args...) } // Infoln package-level convenience method. func Infoln(args ...interface{}) { defaultLogger.Infoln(args...) } // Panic package-level convenience method. func Panic(args ...interface{}) { defaultLogger.Panic(args...) } // Panicf package-level convenience method. func Panicf(format string, args ...interface{}) { defaultLogger.Panicf(format, args...) } // Panicln package-level convenience method. func Panicln(args ...interface{}) { defaultLogger.Panicln(args...) } // Print package-level convenience method. func Print(args ...interface{}) { defaultLogger.Print(args...) } // Printf package-level convenience method. func Printf(format string, args ...interface{}) { defaultLogger.Printf(format, args...) } // Println package-level convenience method. func Println(args ...interface{}) { defaultLogger.Println(args...) } // Warn package-level convenience method. func Warn(args ...interface{}) { defaultLogger.Warn(args...) } // Warnf package-level convenience method. func Warnf(format string, args ...interface{}) { defaultLogger.Warnf(format, args...) } // Warning package-level convenience method. func Warning(args ...interface{}) { defaultLogger.Warning(args...) } // Warningf package-level convenience method. func Warningf(format string, args ...interface{}) { defaultLogger.Warningf(format, args...) } // Warningln package-level convenience method. func Warningln(args ...interface{}) { defaultLogger.Warningln(args...) } // Warnln package-level convenience method. func Warnln(args ...interface{}) { defaultLogger.Warnln(args...) }